package com.ssm.changeunit;

import com.ssm.changeunit.persistance.ChangeUnitDAO;
import com.ssm.changeunit.persistance.ChangeUnitDTO;
import com.ssm.changeunit.persistance.PersistanceException;

/**
 *
 * @author 시리우스
 */
public class ChangeUnitFactory extends AbstractFactory {
    /**
     * 새로운 객체를 생성한다.
     * 
     * 데이터베이스에 존재 하지 않는 경우, 데이터베이스에도 기록한다.
     * 
     * @param changeUnitId
     * @return
     */
    @Override
    public ChangeUnit createProduct(String changeUnitId) throws CreateException {
        try {
            ChangeUnitDAO changeUnitDAO = new ChangeUnitDAO();

            ChangeUnitDTO changeUnitDTO = changeUnitDAO.find(changeUnitId);

            // 데이터베이스에 없는 경우
            if(changeUnitDTO == null) {
                changeUnitDTO = new ChangeUnitDTO();

                changeUnitDTO.setChangeUnitId(changeUnitId);
                changeUnitDTO.setUserId("null");

                changeUnitDAO.insert(changeUnitDTO);
            }

            return new ChangeUnit(changeUnitId);
        }
        catch(PersistanceException ex) {
            throw new CreateException("ChangeUnit을 생성하는데 실패했습니다.", ex);
        }
    }
}